package com.firefighting.controller;

/*
 * author:zh
 * function:日期操作
 * date:2017/11/9
 * 
 * */
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

//获取指定日期前后日期
public class GetDate {
	// 获取今天后几天，num为向后天数
	public String getAfterDay(int num) {
		Date date = new Date();// 取当前时间
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		calendar.add(calendar.DATE, num);// 把日期往前减少一天，若想把日期向后推一天则将负数改为正数
		date = calendar.getTime();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		String dateString = formatter.format(date);
		// System.out.println("后几天---------------》"+dateString.toString());
		return dateString;
	}
	// 获取指定日期后几天，num为向后天数
	public String getTheAfterDay(Date date,int num) {
		
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		calendar.add(calendar.DATE, num);// 把日期往前减少一天，若想把日期向后推一天则将负数改为正数
		date = calendar.getTime();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		String dateString = formatter.format(date);
		// System.out.println("后几天---------------》"+dateString.toString());
		return dateString;
	}
	// 获取指定日期前几天，num为向前天数
		public String getThebeforeDay(Date date,int num) {
			
			Calendar calendar = new GregorianCalendar();
			calendar.setTime(date);
			calendar.add(calendar.DATE, -num);// 把日期往前减少一天，若想把日期向后推一天则将负数改为正数
			date = calendar.getTime();
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
			String dateString = formatter.format(date);
			// System.out.println("前几天---------------》"+dateString.toString());
			return dateString;
		}
	// 获取前几天，num为向前天数
	public String getBefereDay(int num) {
		Date date = new Date();// 取当前时间
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		calendar.add(calendar.DATE, -num);// 把日期往前减少一天，若想把日期向后推一天则将负数改为正数
		date = calendar.getTime();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		String dateString = formatter.format(date);
		// System.out.println("前几天---------------》"+dateString.toString());
		return dateString;
	}

	// 获取一段日期的每一天
	public List<Date> getEveryDay(Date first, Date last) {

		List<Date> lDate = new ArrayList<Date>();
		lDate.add(first);
		Calendar calBegin = Calendar.getInstance();
		// 使用给定的 Date 设置此 Calendar 的时间
		calBegin.setTime(first);
		Calendar calEnd = Calendar.getInstance();
		// 使用给定的 Date 设置此 Calendar 的时间
		calEnd.setTime(last);
		// 测试此日期是否在指定日期之后
		while (last.after(calBegin.getTime())) {
			// 根据日历的规则，为给定的日历字段添加或减去指定的时间量
			calBegin.add(Calendar.DAY_OF_MONTH, 1);
			lDate.add(calBegin.getTime());
			//System.out.println(calBegin.getTime().toString());
		}

		return lDate;
	}
	
	//日历控件的时间拆分
	public String[] dateSplit(String duringTime){
		
		String during[] = duringTime.split(" - ");
		String first = during[0];   
		String last = during[1];
		String firststr[] = first.split("/");
		String laststr[] = last.split("/");
		first = firststr[2]+"-"+firststr[0]+"-"+firststr[1];
		last = laststr[2]+"-"+laststr[0]+"-"+laststr[1];
		String splitTime[] = {first,last};
		return splitTime;		
	}
	//转换时间格式
	public String getTime(String time) {
		if(time.trim().equals("")||time==null||time.indexOf("/")<0)
			return "";
		if(time.indexOf("-")>0)
			return time;
		String t[] = time.split("/");
		return t[2]+"-"+t[0]+"-"+t[1];
		
	}
	

}

